package com.gexin.common;

import java.io.File;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.util.Hashtable;
import com.gexin.common.utils.IdGenerateUtils;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.jfinal.kit.PathKit;

/**
 * 二维码生成工具类
 * @author 肖得明
 */
public class QrCodeKit {
	private static int width = 300; // 二维码图片宽度
	private static  int height = 300; // 二维码图片高度
	private static  String format = "gif";// 二维码的图片格式
	private static  String File_Path = PathKit.getWebRootPath()+File.separator+"code";// 二维码的图片格式
	static{
		File f =new File(File_Path);
		if(!f.exists()){
			f.mkdir();
		}
	}
	/**
	 * 生成二维码
	 * @param text  文本
	 * @return  文件名
	 */
	public static String getQrCode(String text){
		try {
			Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();
			hints.put(EncodeHintType.CHARACTER_SET, "utf-8");	// 内容所使用字符集编码
			hints.put(EncodeHintType.MARGIN, 1);
			BitMatrix bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height, hints);
			// 生成二维码
			String file_id= IdGenerateUtils.getId()+".gif";
	        Path path = FileSystems.getDefault().getPath(File_Path, file_id);  
	        MatrixToImageWriter.writeToPath(bitMatrix, format, path);// 输出图像  
	        return File_Path+File.separator+file_id;
		} catch (Exception e) {
			return null;
		}

	}
	public static void main(String[] args) {
		String file_name = getQrCode("test");
		System.err.println(file_name);
	}
}
